package com.bkgy.controller.tcoilslit.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 钢卷分切过程记录表，用于生产质量追溯
 *
 * @TableName T_COIL_SLIT
 */
@Data
@TableName(value = "T_COIL_SLIT")
public class TCoilSlit {
    /**
     * 自增主键（起始值=1，步长=1），唯一标识分卷记录
     */
    @TableId(type = IdType.AUTO)
    private Long indocno;

    /**
     * 原卷号（上游系统提供的唯一物料标识）
     */
    @TableField("entid")
    @Excel(name = "原卷号", width = 15, orderNum = "1")
    private String entId;

    /**
     * 销售合同编号（格式示例：SO20250510-001）
     */
    @TableField("orderno")
    @Excel(name = "销售合同编号", width = 20, orderNum = "2")
    private String orderNo;

    /**
     * 产线编码（取值范围：CAL1630/CAL2150/CGL1870/TCM2280）
     */
    @TableField("PRODUCT_LINE")
    @Excel(name = "产线编码", width = 15, orderNum = "3")
    private String productLine;

    /**
     * 订单允许的最小单件重量（单位：千克，精度0.01kg）
     */
    @TableField("order_unit_wt_min")
    @Excel(name = "最小单件重量(kg)", width = 15, orderNum = "4")
    private BigDecimal orderUnitWTMin;

    /**
     * 订单允许的最大单件重量（单位：千克，精度0.01kg）
     */
    @TableField("order_unit_wt_max")
    @Excel(name = "最大单件重量(kg)", width = 15, orderNum = "5")
    private BigDecimal orderUnitWTMax;

    /**
     * 入口材料重量（单位：吨，精度0.001吨=1kg）
     */
    @TableField("IN_MAT_WT")
    @Excel(name = "入口材料重量(吨)", width = 15, orderNum = "6")
    private BigDecimal inMatWt;

    /**
     * 成材率（计算公式：(分卷重量*分卷数)/入口材料重量*100%）
     */
    @TableField("YIELD_RATE")
    @Excel(name = "成材率(%)", width = 10, orderNum = "7")
    private BigDecimal yieldRate;

    /**
     * 分卷数量（默认值1，取值范围1-32767）
     */
    @TableField("SLIT_NUM")
    @Excel(name = "分卷数量", width = 10, orderNum = "8")
    private Integer slitNum;

    /**
     * 单卷分切重量（单位：吨，精度0.001吨=1kg）
     */
    @TableField("SLIT_WEIGHT")
    @Excel(name = "单卷分切重量(吨)", width = 15, orderNum = "9")
    private BigDecimal slitWeight;

    /**
     * 重量不符标识（0-正常，1-不符，需填写REASON字段）
     */
    @TableField("wt_mismatch_flag")
    @Excel(name = "重量不符标识", width = 15, orderNum = "10", replace = {"正常_0", "不符_1"})
    private String wtMisMatchFlag;

    /**
     * 重量不符原因描述（当FLAG=1时必填）
     */
    @TableField("REASON")
    @Excel(name = "重量不符原因", width = 20, orderNum = "11")
    private String reason;

    /**
     * 记录创建时间（自动获取系统时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("CREATE_TIME")
    @Excel(name = "创建时间", width = 20, orderNum = "12", format = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 分切损耗重量（计算公式：入口材料重量 - (分卷数量*单卷分切重量)，单位：吨，精度0.001吨=1kg）
     */
    @TableField("LOSS_WEIGHT")
    @Excel(name = "损耗重量(吨)", width = 15, orderNum = "13")
    private BigDecimal lossWeight;

    /**
     * 钢种类型
     */
    @TableField("steelgrade")
    @Excel(name = "钢种类型", width = 15, orderNum = "14")
    private String steelGrade;

    /**
     * 入口材料厚度
     */
    @TableField("IN_MAT_THICK")
    @Excel(name = "入口材料厚度", width = 15, orderNum = "15")
    private BigDecimal inMatThick;

    /**
     * 入口材料宽度
     */
    @TableField("IN_MAT_WIDTH")
    @Excel(name = "入口材料宽度", width = 15, orderNum = "16")
    private BigDecimal inMatWidth;

    /**
     * 入口材料长度
     */
    @TableField("IN_MAT_LEN")
    @Excel(name = "入口材料长度", width = 15, orderNum = "17")
    private Integer inMatLen;

    /**
     * 出口卷长度
     */
    @TableField("OUT_MAT_LEN")
    @Excel(name = "出口卷长度", width = 15, orderNum = "18")
    private Integer outMatLen;

    /**
     * 出口卷宽度
     */
    @TableField("OUT_MAT_WIDTH")
    @Excel(name = "出口卷宽度", width = 15, orderNum = "19")
    private BigDecimal outMatWidth;

    /**
     * 出口卷厚
     */
    @TableField("OUT_MAT_THICK")
    @Excel(name = "出口卷厚度", width = 15, orderNum = "20")
    private BigDecimal outMatThick;

    /**
     * 缺陷代码
     */
    @TableField("DEFECT_CODE")
    @Excel(name = "缺陷代码", width = 15, orderNum = "21")
    private String defectCode;

    /**
     * 缺陷等级
     */
    @TableField("DEFECT_CLASS")
    @Excel(name = "缺陷等级", width = 15, orderNum = "22")
    private String defectClass;

    /**
     * 班组
     */
    @TableField("CREW")
    @Excel(name = "班组", width = 15, orderNum = "23")
    private String crew;
}